package com.yc.creationType.singleton;

/**
 * 懒汉模式
 * 只有在使用的时候才会加载这个
 */
public class LazySingleton {

    private static LazySingleton lazySingleton ;
    // 私有的构造器
    private LazySingleton() {

    }

    // 获取实例
    public static LazySingleton getInstance() {
        if (lazySingleton == null) {
            lazySingleton = new LazySingleton();
        }
        return lazySingleton;
    }


    // 线程安全模式  使用synchronized关键字修饰方法
    public static synchronized LazySingleton getInstance1(){
        if (lazySingleton == null) {
            lazySingleton = new LazySingleton();
        }
        return lazySingleton;
    }

    // 双重锁  同步代码块方式
    public static LazySingleton getInstance2() {
        if (lazySingleton == null) {
            synchronized (LazySingleton.class) {
                if (lazySingleton == null) {
                    lazySingleton = new LazySingleton();
                }
            }
        }
        return lazySingleton;
    }

}
